The present application relates generally to storage controllers, and more specifically to storage controllers having interfaces configured to allow computers assigned to multiple different computer domains connected by at least one switch fabric to share resources of a common set of storage devices. As employed herein, the term “computer domain” refers to a collection of central processing units (CPUs) whose memory addresses are under the same physical address spaces.
In a typical computer system, a group of computers assigned to a first computer domain can employ a storage controller to access an attached set of storage devices. For example, the set of storage devices may be a set of solid-state disks (SSDs) or magnetic hard disks (HDs). Further, the storage controller may be a serial advanced technology attachment (SATA) controller employing an advanced host controller interface (AHCI) to implement a bus adapter between the computers within the first computer domain and the set of disks. The computers within the first computer domain can share a common memory addressing space in coherent memory, and can be connected to the SATA controller via an internal bus, employing a single instance of a software driver to communicate with the SATA controller.
In the typical computer system described above, the computers within the first computer domain can be connected to at least one other group of computers assigned to at least a second computer domain. The computers within the second computer domain can be configured to request assistance from the computers within the first computer domain to gain access to the attached set of disks. Further, such requests for assistance to access the set of disks may be made using known resource sharing technologies such as network file system (NFS) technology, fibre channel (FC) technology, network-attached storage (NAS) technology, or storage area network (SAN) technology. In this way, groups of computers within multiple different computer domains can access a common set of disks concurrently at runtime to share data stored on the respective disks.
The known multi-root I/O virtualization (MR-IOV) specification might also be used for sharing data stored on a common set of disks among computers within multiple different computer domains. For example, using the known MR-IOV specification in the typical computer system described above, the internal bus may be configured to conform to the known Peripheral Component Interconnect express (PCIe) specification, and a specialized bus adapter, known as the “MR-IOV aware device”, may be used to support multiple non-coherent host computers.